package UT01.actividad6;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.StringTokenizer;

public class WriteEmployee {
	
	public static ArrayList<Employee>  leerEmpleados(String nombrefichero){
		
		ArrayList<Employee> lista = new ArrayList<Employee>();	
		BufferedReader f = null;
		int cont = 0;
		Employee emp;
		StringTokenizer tokens;
		String name ="";
		String lastname ="" ;
		int job = 0 ;
		String date =null ;
		double salary = 0;
		double commission = 0 ;
		int dept_number = 0;
		int id = 0;
		// Declaramos el fichero
				try {
					
					f = new BufferedReader(new FileReader(nombrefichero)); // Creamos el flujo de entrada
					String linea;

					while ((linea = f.readLine()) != null){ //se va leyendo un car�cter
						cont++;	
						tokens=new StringTokenizer(linea,";");
						while(tokens.hasMoreTokens()){						
							 id = Integer.parseInt(tokens.nextToken()); //8
							 name = tokens.nextToken(); //1
							 lastname = tokens.nextToken(); //2
							 job = Integer.parseInt(tokens.nextToken()); //3
							 date = tokens.nextToken(); //4
							 salary = Double.parseDouble(tokens.nextToken()); //5
							 commission = Double.parseDouble(tokens.nextToken()); //6
							 dept_number = Integer.parseInt(tokens.nextToken()); //7
							
							
							
				           
				            
				           emp=  new Employee(id, lastname, name, job,	
					        		   date, salary, commission, dept_number);
				           
				           
				           
				           
				           System.out.println(emp.toString());
				           
				           lista.add(emp);
						}
							//new java.util.Scanner(System.in).nextLine();
						}
					
					
				} 
				catch (FileNotFoundException fnfe) {
					System.out.println("El fichero "+nombrefichero+" no se encuentra");	}
				catch (IOException ioe) {
					System.out.println("El disco est� lleno o protegido contra escritura ");	}
				catch (NullPointerException npe) {
					System.out.println("Error");
					 System.out.println(name+ " "+ lastname +" " +
					            job + " "+ date + " " + salary + " " + commission +	            
					            " " + dept_number + " " + id);
					 npe.printStackTrace();
					 }
				
				finally { 
					try {
						f.close();
						System.out.println("---Fichero terminado---");
					} catch (IOException e) {						
						} // cficheros/erramos el fichero}
				}
				System.out.println("numero de empleados "+cont);
				return lista;
	}
	
	public static void escribirEmpleados(ArrayList<Employee> lista ){
	
		String nombrefichero = "c:/ficheros/Employee.dat";

	ObjectOutputStream dataOS = null;

	try {
		// Conecto el flujo de bytes al flujo de datos
		dataOS = new ObjectOutputStream(new FileOutputStream(nombrefichero));		
		for(Employee e: lista)
			dataOS.writeObject(e); // escribo restaurante en el fichero

	
	} catch (FileNotFoundException fnfe) {
		System.out.println("El fichero " + nombrefichero
				+ " no se encuentra");
	} catch (IOException ioe) {
		System.out.println("Error de E/S");
	}
	finally{
		try {
			dataOS.close();
		} catch (IOException e) {				
			e.printStackTrace();
		} // cerrar stream de salida}
	}

}

	public static void main(String[] args) {
		
		ArrayList<Employee> lista = leerEmpleados("c:/ficheros/empleados.csv");
		escribirEmpleados(lista);
	}
}
